/**
 * 给你二叉树的根节点 root ，请你采用前序遍历的方式，将二叉树转化为一个由括号和整数组成的字符串，返回构造出的字符串。
 *  空节点使用一对空括号对 "()" 表示，转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。
 *https://leetcode.cn/problems/construct-string-from-binary-tree/
 *
 */
class Tree2str {
    public String tree2str(TreeNode root) {
        StringBuilder str=new StringBuilder();
       
        buidStringByTree(root,str);
        return str.toString();
    }
    public void buidStringByTree(TreeNode root,StringBuilder str){
        if(root==null)
        return ;
        str.append(root.val);
        if(root.left!=null){
            str.append("(");
            buidStringByTree(root.left,str);
            str.append(")");
        }else{
            if(root.right==null){
                return;
            }else{
                str.append("()");
            }
        }
        if(root.right!=null){
            str.append("(");
            buidStringByTree(root.right,str);
            str.append(")");
        }
       
    }
}